import requests
# 定义一个 common 的类，它的父类是 object
class Common(object):
    # common 的构造函数
    def __init__(self,url_root):
        # 被测系统的跟路由
        self.url_root = url_root
    # 封装get 请求，uri 是访问路由，params 是 get 请求的参数，如果没有默认为空
    def get(self, uri, params=''):
        # 拼凑访问地址
        url = self.url_root + uri + params
        # 通过 get 请求访问对应地址
        res = requests.get(url)
        # 返回 request 的 Response 结果，类型为 requests 的 Response 类型
        return res
    # 封装post 方法，uri 是访问路由，params 是 post 请求需要传递的参数，如果没有参数这里为空
    def post(self, uri, headers='',params=''):
        # 拼凑访问地址
        url = self.url_root + uri
        if len(params) > 0:
        # 如果有参数，那么通过 post 方式访问对应的 url，并将参数赋值给 requests.post 默认参数 data
        # 返回 request 的 Response 结果，类型为 requests 的 Response 类型
            res = requests.post(url, headers=headers,data=params)
        else:
        # 如果无参数，访问方式如下
        # 返回 request 的 Response 结果，类型为 requests 的 Response 类型
            res = requests.post(url, headers=headers)
        return res
    def put(self,uri, headers='',params=None):
        '''
        封装put 方法，uri 是访问路由，params 是 put 请求需要传递的参数，如果没有参数这里为空
        :param uri: 访问路由
        :param params: 传递参数，string 类型，默认为 None
        :return: 此次访问的 response
        '''
        url = self.url_root+uri
        if params is not None:
        # 如果有参数，那么通过 put 方式访问对应的 url，并将参数赋值给 requests.put 默认参数 data
        # 返回 request 的 Response 结果，类型为 requests 的 Response 类型
            res = requests.put(url, headers=headers, data=params)
        else:
        # 如果无参数，访问方式如下
         # 返回 request 的 Response 结果，类型为 requests 的 Response 类型
            res = requests.put(url)
        return res

    def delete(self,uri,params=None):
        '''
        封装delete 方法，uri 是访问路由，params 是 delete 请求需要传递的参数，如果没有参数这里为空
        :param uri: 访问路由
        :param params: 传递参数，string 类型，默认为 None
        :return: 此次访问的 response
        '''
        url = self.url_root + uri
        if params is not None:
        # 如果有参数，那么通过 delete 方式访问对应的 url，并将参数赋值给 requests.delete 默认参数 data
        # 返回 request 的 Response 结果，类型为 requests 的 Response 类型
            res = requests.delete(url, data=params)
        else:
        # 如果无参数，访问方式如下
        # 返回 request 的 Response 结果，类型为 requests 的 Response 类型
            res = requests.delete(url)
        return res

